<div id="leftmenu">

    <div id="leftmenu_top"></div>

    <div id="leftmenu_main">    

        <h3>Mon Compte</h3>

        <ul>
            <li><a href="module-utilisateurs-compte.html">Mes infos</a></li>
            <?php if ($_SESSION['role'] == "admin" || $_SESSION['role'] == "manager") { ?>
                <li><a href="module-utilisateurs-ajouter_utilisateur.html">Ajouter utilisateur</a></li>
            <?php } ?>
        </ul>
    </div>


    <div id="leftmenu_bottom"></div>
</div>




<div id="content">


    <div id="content_top"></div>
    <div id="content_main">
        <?php
// Vérification des droits d'accès de la page
        if (!utilisateur_est_connecte()) {

            // On affiche la page d'erreur comme quoi l'utilisateur n'est pas connecté   
            include CHEMIN_VUE_GLOBALE . 'erreur_non_connecte.php';
        } else {
            include CHEMIN_LIB . 'form.php';

// "formulaire_connexion" est l'ID unique du formulaire
            $form_role = new Form('formulaire_choixRole');
            $form_role->action("");
            $form_role->method('POST');

            require_once(CHEMIN_MODELE . "RoleManager.php");
            $rolesUser = array();
            foreach (RoleManager::GetRolesUser($_SESSION['login']) as $role) {
                $rolesUser[$role] = $role;
            }
            $form_role->add('Select', 'roleUser')
                    ->label("Choisissez votre profil")
                    ->choices($rolesUser)
                    ->required(true);
            $form_role->add('Submit', 'submit')
                    ->value("Changer mon profil !");

            // Pré-remplissage avec les valeurs précédemment entrées (s'il y en a)
            $form_role->bound($_POST);


            /* -----------------------------------------------------------------------------------
             *                  FORMULAIRE POUR AFFICHER LES INFOS DE L'UTILISATEUR
             * ----------------------------------------------------------------------------------
             */


            require_once(CHEMIN_MODELE . "UtilisateurManager.php");
            $user = UtilisateurManager::getUtilisateur($_SESSION['login']);
            $form_informations = new Form("form_informations");
            $form_informations->action("");
            $form_informations->method("POST");
            $form_informations->add("Text", "login")
                    ->label("Votre login")
                    ->value($_SESSION['login'])
                    ->required(false)
                    ->disabled(true);

            //Obligation de vérifier si le formulaire existe pour pouvoir afficher les nouvelles infos
            $prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : $user->getPrenom();
            $form_informations->add("Text", "prenom")
                    ->label("Votre prénom")
                    ->value($prenom);

            $nom = !empty($_POST['nom']) ? $_POST['nom'] : $user->getNom();
            $form_informations->add("Text", "nom")
                    ->label("Votre nom")
                    ->value($nom);

            $form_informations->add("Password", "pwd")
                    ->label("Votre mot de passe")
                    ->required(false);

            $form_informations->add("Password", "pwd2")
                    ->label("Votre mot de passe (confirmation)")
                    ->required(false);

            $mailPro = !empty($_POST['adresse_email']) ? $_POST['adresse_email'] : $user->getMail("Pro")->getMail();
            $form_informations->add('Email', 'adresse_email')
                    ->label("Email")
                    ->value($mailPro);

            /* $isMailPerso = $user->getMail("Perso");
              $mailPerso = !empty($_POST['adresse_email2']) ? $_POST['adresse_email2'] : isset($isMailPerso) ? $user->getMail("Perso")->getMail() : null;
             */$form_informations->add('Email', 'adresse_email2')
                    ->label("Email 2:")
                    ->required(false)
                    ->value('toto');

            $telFixe = !empty($_POST['tel_fixe']) ? $_POST['tel_fixe'] : $user->getTel("Fixe")->getNumero();
            $form_informations->add('Text', 'tel_fixe')
                    ->label("Téléphone Fixe")
                    ->required(false)
                    ->value($telFixe);

            $gsm = !empty($_POST['tel_gsm']) ? $_POST['tel_gsm'] : $user->getTel("Portable")->getNumero();
            $form_informations->add('Text', 'tel_gsm')
                    ->label("Portable")
                    ->required(false)
                    ->value($gsm);

            $form_informations->add("Submit", "submit")
                    ->value("Modifier mes infos");

            $form_informations->bound($_POST);
            // Création d'un tableau des erreurs
            $erreurs_informations = array();

            /* --------------------------------------------------------------
             *               FORMULAIRE MODIFICATION DE MOT DE PASSE
             * --------------------------------------------------------------
             */
            
            // "form_modif_mdp" est l'ID unique du formulaire
            $form_modif_mdp = new Form("form_modif_mdp","post");

            $form_modif_mdp->add('Password', 'mdp')
                    ->label("Votre nouveau mot de passe");

            $form_modif_mdp->add('Password', 'mdp_verif')
                    ->label("Votre nouveau mot de passe (vérification)");

            $form_modif_mdp->add('Submit', 'submit')
                     ->value("Modifier mon mot de passe !");

            $erreurs_form_modif_mdp = array();

            // Création d'un tableau des messages de confirmation
            $msg_confirm = array();

            /*
             *             VERIFICATION 
             */


            // Validation des champs suivant les règles
            if ($form_role->is_valid($_POST) || $form_informations->is_valid($_POST)) {
                if ($form_role->is_valid($_POST)) {
                    list($roleUser, $submit) =
                            $form_role->get_cleaned_data('roleUser', 'submit');
                    $_SESSION['role'] = $roleUser;
                    include CHEMIN_VUE . 'mon_compte.php';
                } else if ($form_informations->is_valid($_POST)) {
                    // On vérifie si les 2 mots de passe correspondent
                    $mdp = $form_informations->get_cleaned_data('mdp');
                    $mdp2 = $form_informations->get_cleaned_data('mdp_verfi');

                    if ($form_informations->get_cleaned_data('mdp') != $form_informations->get_cleaned_data('mdp_verif')) {

                        $erreurs_informations[] = "Les deux mots de passes entrés sont différents !";
                        // On réaffiche le formulaire
                        include CHEMIN_VUE . 'mon_compte.php';
                    }
                    // Si d'autres erreurs ne sont pas survenues
                    if (empty($erreurs_informations)) {
                        list($login, $nom, $prenom, $mdp, $adresse_email, $adresse_email2, $etablissement, $roleId, $telFixe, $telGsm) =
                                $form_informations->get_cleaned_data('login', 'nom', 'prenom', 'mdp', 'adresse_email', 'adresse_email2', 'etablissement', 'roleId', 'tel_fixe', 'tel_gsm');
                        $user = new Utilisateur($_SESSION['login'], sha1($mdp), $nom, $prenom);
                        $user->addUnMail(new Mail($adresse_email, "Pro"));
                        $user->addUnMail(new Mail($adresse_email2, "Perso"));
                        $result = UtilisateurManager::update($user);
                        if ($result) {
                            
                            $_SESSION['nom'] = $nom;
                            $_SESSION['prenom'] = $prenom;
                        } else {
                            print_r($result);
                        }
                        echo "à faire !<br>";
                        echo "Méthode à implémenter dans UtilisateurManager";
                    }
                } else {
                    // On réaffiche le formulaire
                    //include CHEMIN_VUE . 'mon_compte.php';
                }
            } 
            if ($form_modif_mdp->is_valid($_POST)) {
                
                // On vérifie si les 2 mots de passe correspondent
                if ($form_modif_mdp->get_cleaned_data('mdp') != $form_modif_mdp->get_cleaned_data('mdp_verif')) {

                    $erreurs_form_modif_mdp[] = "Les deux mots de passes entrés sont différents !";

                    // C'est bon, on peut modifier la valeur dans la BDD
                } else {
                    $mdp= $form_modif_mdp->get_cleaned_data('mdp');
                   
                    if (UtilisateurManager::updatePassword($_SESSION['login'], sha1($mdp)) ==1) {
                        $msg_confirm[] = "Votre mot de passe a été modifié avec succès !";
                    }
                    else {
                        $erreurs_form_modif_mdp[] = "Erreur survenue";
                    }

                    
                }
            }
            include CHEMIN_VUE . 'mon_compte.php';
        }
        ?>
    </div>